<?php

/**
 * alltosun.com  machine_helper.php
 * ============================================================================
 * 版权所有 (C) 2009-2013 北京互动阳光科技有限公司，并保留所有权利。
 * 网站地址: http://www.alltosun.com
 * ----------------------------------------------------------------------------
 * 许可声明：这是一个开源程序，未经许可不得将本软件的整体或任何部分用于商业用途及再发布。
 * ============================================================================
 * $Author: 王德康 (wangdk@alltosun.com) $
 * $Date: 2016-1-15 下午12:24:03 $
 * $Id: machine_helper.php 178128 2016-04-18 04:55:15Z gaoa $
 */
class machine_helper
{

    /**
     * 获取某门店下的某种类型的设备绑定数量 (第二个参数为空则获取总数)
     * @param unknown $store_id
     * @param string $type
     * @param unknown $filter
     */
    public static function get_device_num_by_store_id($store_id, $type = '', $filter = array()) {
        if (!$store_id) {
            return 0;
        }

        $filter['store_id'] = $store_id;
        if (!isset($filter['status'])) {
            $filter['status'] = 2;
        }
        if ($type) {
            $filter['type'] = $type;
        }
        return _model('store_device_relation')->getTotal($filter);

    }

    /**
     * 通过总店id获取总店下所有的设备数量
     */
    public static function get_device_num_by_owner_id($owner_id, $store_filter = array(), $device_filter = array()) {
        if (!$owner_id) {
            return 0;
        }

        if ($store_filter) {
            $store_list = store_helper::get_store_list_by_owner_id($owner_id, $store_filter);
        } else {
            $store_list = store_helper::get_store_list_by_owner_id($owner_id);
        }

        if (!$store_list) {
            return $owner_id;
        }
        $device_num = 0;
        foreach ($store_list as $k => $v) {
            $device_filter['store_id'] = $v['id'];
            $device_filter['status'] = 2;
            $device_num += _model('store_device_relation')->getTotal($device_filter);
        }

        return $device_num;
    }

    /**
     * 返回广告机信息
     * @param unknown_type $adbox_no
     * @return unknown
     */
    public static function update_status($machine_no, $status) {
        return _model('machine')->update(array('machine_no' => $machine_no), array('status' => $status));
    }

    /**
     * 修改设备码状态
     */
    public static function update_device_status($device_no, $res_name, $status = 2) {
        return _model($res_name)->update(array('code' => $device_no), array('status' => $status));
    }

    /**
     * 获取设备id
     * @param unknown $device_code 设备序列号
     */
    public static function get_machine_id($machine_no) {
        if (!$machine_no) {
            return false;
        }

        $machine_info = _uri('machine', array('machine_no' => $machine_no));

        if ($machine_info) {
            return $machine_info['id'];
        } else {
            return false;
        }
    }

    /**
     * 获取设备id
     */
    public static function get_device_id($device_no, $res_name) {
        $device_info = _uri($res_name, array('code' => $device_no));
        if ($device_info) {
            return $device_info['id'];
        } else {
            return false;
        }
    }

    /**
     * 通过设备id获取设备码
     */
    public static function get_device_no($device_id, $res_name) {
        if (!in_array($res_name, machine_config::$type_list) || !$device_id) {
            return array();
        }

        return _uri($res_name, $device_id, 'code');
    }

    /**
     * 通过设备id获取设备码信息
     */
    public static function get_device_info($device_id, $res_name) {
        if (!in_array($res_name, machine_config::$type_list) || !$device_id) {
            return array();
        }

        return _uri($res_name, $device_id);
    }

    /**
     * 获取设备类型
     */
    public static function get_device_type($device_no) {
        if (!$device_no) {
            return false;
        }
        $sign = substr($device_no, 0, 2);
        return $sign;
    }

    public static function get_device_resname($device_no) {
        if (!$device_no) {
            return false;
        }

        $sign = substr($device_no, 0, 2);

        if (strtoupper('ad') == strtoupper($sign)) {
            return 'adbox';
        } elseif (strtoupper('os') == strtoupper($sign)) {
            return 'ibeacon';
        } elseif (strtoupper('ta') == strtoupper($sign)) {
            return 'game_table';
        }/*  elseif (strtoupper('cm') == strtoupper($sign)) {
            return 'coffee';
        } */ else {
            return 'machine';
        }
    }

    /**
     * 判断是否是老的保温箱
     */
    public static function is_old_machine($device_no) {
        $sign = substr($device_no, 0, 2);
        if (strtoupper('ZX') == strtoupper($sign)) {
            // 老设备
            return 1;
        } else {
            // 新设备
            return 0;
        }
    }

    /**
     * 获取指定类型的设备码
     */
    public static function get_device_no_list_by_type($type = '', $status = 2) {
        if (!in_array($type, machine_config::$type_list)) {
            return array();
        }
        return _model('device')->getList(array('status' => $status, 'type' => $type));
    }

    /**
     * 获取设备绑定关系
     */
    public static function get_store_device_relation($device_id, $device_type = 'machine') {
        return _uri('store_device_relation', array('dev_id' => $device_id));
    }

    /**
     * 判断店铺是否绑定设备
     */
    public static function is_bind_device($store_id) {
        if (!$store_id) {
            return false;
        }
        $res = _model('store_device_relation')->getList(array('store_id' => $store_id, 'status' => 2));
        if ($res) {
            return true;
        } else {
            return false;
        }
    }


}
